大家午安 ~ 剛剛打開介面發文時,看到有 iThome 邦友訂閱文章,真的是無比開心 Q
感謝大家的不嫌棄  
  
  
昨天我們已經『啟用 CloudFront 日誌』,今天我們則要來討論『如何在 AWS Quicksight  Join 不同資料源』,在要進行實作以前,要先建立 CloudFront 日誌的資料表,故大家可以參考『Day 18』~『Day 19』文章將 CloudFront Log 轉換成 Parquet 格式、調整 Partition 以及自動建立資料表
或者我們也可以於 Athena 手動執行 SQL 語法建立資料表 [1]
CREATE EXTERNAL TABLE IF NOT EXISTS default.cloudfront_logs (
  `date` DATE,
  time STRING,
  location STRING,
  bytes BIGINT,
  request_ip STRING,
  method STRING,
  host STRING,
  uri STRING,
  status INT,
  referrer STRING,
  user_agent STRING,
  query_string STRING,
  cookie STRING,
  result_type STRING,
  request_id STRING,
  host_header STRING,
  request_protocol STRING,
  request_bytes BIGINT,
  time_taken FLOAT,
  xforwarded_for STRING,
  ssl_protocol STRING,
  ssl_cipher STRING,
  response_result_type STRING,
  http_version STRING,
  fle_status STRING,
  fle_encrypted_fields INT,
  c_port INT,
  time_to_first_byte FLOAT,
  x_edge_detailed_result_type STRING,
  sc_content_type STRING,
  sc_content_len BIGINT,
  sc_range_start BIGINT,
  sc_range_end BIGINT
)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t'
LOCATION 's3://<<存放CloudFront的S3 bucket名稱>>/cloudfront/'
TBLPROPERTIES ( 'skip.header.line.count'='2' )
完成了資料表的建立後~ 我們就可以開始實作 - 『如何在 AWS Quicksight 進行 Join 不同資料源』
那我們就開始吧 GOGO






這邊就是用來設定我們要如何合併資料源的方法以及用哪些欄位進行 Join
下方為 Join clauses,就是設定若當 vpc log 的 xx欄位與 cloudfront log xx欄位內容相同時,我們要進行Join
而 Join Type 則是 Join 的類型,分成 Inner、Left、Right、Full
舉個例子:
這是產品列表,裡面有兩個欄位(ID、Product Name),並存放兩筆紀錄
| ID | Product Name | 
|---|---|
| Product001 | 洗碗精 | 
| Product002 | 洗衣精 | 
這是產品訂單的資料表,裡面有兩個欄位(Client Name、ID),並存放兩筆紀錄
| Client Name | ID | 
|---|---|
| Dorothy | Product001 | 
| Kurama | Product003 | 
今天我想知道每個客戶購買的產品名稱,故我透過 ID 將兩個資料表合併以得到 Product Name
| Client Name | ID | Product Name | 
|---|---|---|
| Dorothy | Product001 | 洗碗精 | 
| Client Name | ID | Product Name | 
|---|---|---|
| Dorothy | Product001 | 洗碗精 | 
| Kurama | Product003 | 
| Client Name | ID | Product Name | 
|---|---|---|
| Dorothy | Product001 | 洗碗精 | 
| Product002 | 洗衣精 | 
| Client Name | ID | Product Name | 
|---|---|---|
| Dorothy | Product001 | 洗碗精 | 
| Kurama | Product003 | |
| Product002 | 洗衣精 | 
Join 的方法就依據每個人的需求來選擇,這邊我就選擇 Inner Join
選擇完後按儲存,你就可以看到兩個資料源已成功 Join 起來
那接下來就是可以依據大家的需求開始進行儀表板的建置啦~
今天就先這樣,明天我們就會來討論『如何啟用 WAF 日誌』,明天見囉 : D ~
如果有任何指點與建議,也歡迎留言交流,一起漫步在 Data on AWS 中。
參考&相關來源:
[1] 為 CloudFront 日誌建立資料表
https://docs.aws.amazon.com/zh_tw/athena/latest/ug/cloudfront-logs.html